﻿#pragma once

#include <learn/ais/ais_object.h>
#include <learn/ais/camera.h>

namespace xi
{

namespace ais
{

class EXT_SYMBOL AIS_Camera : public AIS_Object
{
  public:
    AIS_Camera(AIS_Camera &&) = delete;

    /**
     * @brief 显式构造
     *
     * @param[in] width 相机宽度
     * @param[in] height 相机高度
     *
     */
    explicit AIS_Camera(float width, float height);

    /**
     * @brief 获得相机
     *
     * @return std::shared_ptr<Camera>
     */
    std::shared_ptr<Camera> camera() const;

    /**
     * @brief 初始化消息
     *
     * @param[in] msg
     */
    void visit(AIS_InitMsg *msg) override;

  protected:
    std::shared_ptr<Camera> m_camera;
};

} // namespace ais

} // namespace xi
